package mbeans;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import model.Anuncio;
import model.Usuario;
import armazenamento.Cadastros;

@ManagedBean(name="principal")
@SessionScoped
public class Principal {
	
	private static Cadastros cadastros;
	private String msg = "";
	
	private String login;
	private String senha;
	private Usuario usuario = null;
	private Anuncio anuncio = new Anuncio();
	
	public Principal() {
		super();
		cadastros = Cadastros.getInstance();
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	public Anuncio getAnuncio() {
		return anuncio;
	}

	public void setAnuncio(Anuncio anuncio) {
		this.anuncio = anuncio;
	}

	public String autentica() {
		usuario = cadastros.getUsuario(this.login);
		if (usuario != null && senha.equals(usuario.getSenha())) {
			this.msg = "";
			return "login";
		}
		this.msg = "Login e senha não correspondem a um usuário cadastrado!";
		return "erro";
	}
	
	public String logout() {
		this.usuario = null;
		this.msg = "";
		return "index";
	}
	
	public String adicionaAnuncio() {
		if (usuario != null) {
			usuario.adicionaAnuncio(anuncio);
			this.anuncio = new Anuncio();
			this.msg = "Anúncio cadastrado com sucesso!";
			return "classificado";
		}
		return "erroCadastro";
	}	
	
	public String editaAnuncio() {
		if (usuario != null) {
			usuario.editaAnuncio(anuncio);
			this.anuncio = new Anuncio();
			this.msg = "Anúncio modificado com sucesso!";
			return "classificado";
		}
		return "erroCadastro";
	}	
	
	public String removeAnuncio() {
		if (usuario != null) {
			usuario.removeAnuncio(anuncio);
			this.anuncio = new Anuncio();
			this.msg = "Anúncio removido com sucesso!";
			return "classificado";
		}
		return "erroCadastro";
	}
	
	public List<Anuncio> getListaAnunciosGeral() {
		List<Usuario> usuarios = cadastros.getUsuarios();
		Iterator<Usuario> i = usuarios.iterator();
		
		List<Anuncio> listaGeral = new ArrayList<Anuncio>();
		
		while ( i.hasNext() ) {
			Usuario usuario = (Usuario) i.next(); 
			
			List<Anuncio> listaAnuncio = usuario.getListaAnuncios();
			Iterator<Anuncio> ite = listaAnuncio.iterator();
			
			while ( ite.hasNext() ) {				
				listaGeral.add( (Anuncio) ite.next() );
			}
		}
		return listaGeral;
	}	
	
	public String voltarTelaPrincipal() {
		this.anuncio = new Anuncio();
		return "index";
	}
	
	
}
